// 基础分页查询接口
export interface PageQuery {
  /**
   * 页码
   */
  pageNum?: number;

  /**
   * 每页数量
   */
  pageSize?: number;
}

// 基础实体接口
export interface BaseEntity {
  /**
   * 创建者
   */
  createBy?: string;

  /**
   * 创建时间
   */
  createTime?: string;

  /**
   * 更新者
   */
  updateBy?: string;

  /**
   * 更新时间
   */
  updateTime?: string;
}

// 审核流程模板相关类型定义

export interface ApprovalFlowTemplateVO {
  /**
   * 主键ID
   */
  id: string | number;

  /**
   * 模板名称
   */
  templateName: string;

  /**
   * 模板描述
   */
  description: string;

  /**
   * 阶段数量
   */
  stageCount?: number;

  /**
   * 是否启用
   */
  isActive: string;

  /**
   * 创建人
   */
  createBy: string;

  /**
   * 创建时间
   */
  createTime: string;

  /**
   * 审核阶段列表
   */
  stageList?: ApprovalStageTemplateVO[];
}

// 审核阶段模板相关类型定义
export interface ApprovalStageTemplateVO {
  /**
   * 主键ID
   */
  id: string | number;

  /**
   * 流程模板ID
   */
  templateId: string | number;

  /**
   * 阶段名称
   */
  stageName: string;

  /**
   * 阶段顺序
   */
  stageSort: number;

  /**
   * 审核规则（1一人通过 2全员通过 3按比例通过）
   */
  approvalRule: string;

  /**
   * 通过比例（approval_rule=3时使用）
   */
  passRatio?: number;

  /**
   * 是否必须
   */
  isRequired: string;

  /**
   * 是否固定审核人员
   */
  fixationApprover: string;

  /**
   * 阶段描述
   */
  stageDescription?: string;
}

// 用于组件内部的审核阶段信息
export interface ApprovalStage {
  id?: string | number;
  instanceId?: string | number;
  fixationApprover: string;
  stageName: string;
  stageSort: number;
  approvalRule?: '0' | '1' | '2'; // 0:全员通过 1:一人通过 2:按比例通过
  passRatio?: number; // 通过比例(0.1-1.0)
  isRequired?: '0' | '1'; // 是否必须
  stageDescription?: string;
  approvers?: any[]; // 审核人员列表
  businessType?: string;
  approvalStatus?: string;
  createTime?: string;
  createBy?: string | number;
}

// 审核流程配置数据（简化版）
export interface ApprovalFlowConfig {
  type: 'template' | 'custom';
  stages?: ApprovalStage[];
}

/**
 * 导入模板参数
 */
export interface ImportTemplateParams {
  templateId: number;
  businessType: string;
  businessId: number;
}

/**
 * 提交审核配置参数
 */
export interface SubmitApprovalConfigParams {
  instanceId?: number | null; // 审核实例ID（提交时需要）
  businessType: string;
  businessId: number;
  submitType: 'template' | 'custom';
  stages: SubmitStageConfig[];
}

/**
 * 提交阶段配置
 */
export interface SubmitStageConfig {
  id?: number; // 阶段ID（模板导入时有值）
  stageName: string;
  stageSort: number;
  businessType?: string;
  approvalStatus?: string;
  approvers: string; // 审核人员ID列表（逗号分隔）
  // 以下字段用于自定义模式
  approvalRule?: string;
  passRatio?: number;
  isRequired?: string;
  stageDescription?: string;
}

/**
 * 审核初始化返回结果
 */
export interface ApprovalInitTemplateResult {
  /**
   * 初始化标识：
   * 0-没有设置审核流程
   * 1-模板审核流程
   * 2-自定义审核流程（暂未开发）
   */
  initFlag: string;

  /**
   * 当前审核实例ID（仅当存在审核流程时返回）
   */
  instanceId?: number;

  /**
   * 模板基础信息（仅当initFlag=1时返回）
   */
  flowTemplate?: ApprovalFlowTemplateVO;

  /**
   * 实际阶段列表（仅当initFlag=1,2时返回）
   */
  stageList?: ApprovalStage[];

  /**
   * 当前流程的整体状态（用于前端判断操作权限和页面显示）
   * 0-未提交（没导入审核模板）→ 可以导入模板
   * 1-已提交（导入了模板也编辑了审核人并提交了审核）→ 可以撤销模板、编辑审核人、重新提交审核
   * 2-审核中（提交审核后有审核人审核通过）→ 只能查看
   * 3-审核通过（所有审核阶段审核人都通过）→ 只能查看
   * 4-审核不过（有审核人审核不过）→ 只能查看
   * 5-已导入（介于未提交和已提交之间）→ 可以撤销模板、编辑审核人、提交审核
   * 6-已撤销（备用状态）→ 可以重新导入
   */
  flowStatus?: string;

  /**
   * 是否所有阶段都已配置审核人员
   */
  allStagesConfigured?: boolean;

  /**
   * 是否可以自动导入模板（当检测到有可用模板但尚未导入时为true）
   */
  autoImportAvailable?: boolean;

  /**
   * 可用的模板ID（当autoImportAvailable为true时返回）
   */
  availableTemplateId?: number;
}
